var express = require('express');
var router = express.Router();
var mysql = require('mysql')
var dbConfig = require('../db/dbConfig')
var uuid = require('node-uuid')
var menuSql = require('../db/menuSql')

var pool = mysql.createPool(dbConfig.mysql)     //创建数据库连接池

//向小程序前台返回数据的函数封装
var responseJSON = function (res, ret) {
  if (typeof ret === 'undefined') {
    res.json({
      code: '-200',
      msg: '操作失败'
    })
  } else {
    res.json(ret)
  }
}

/**
 * 拦截小程序的menu.js的请求
 * 返回餐品类型及餐品信息
 */
router.get('/', function (req, res) {
  pool.getConnection(function (err, connection) {
    var gtList = []
    var _res = res
    var data = {}
    connection.query(menuSql.queryGoodsTypeAll, function(err, resp) {
      if (resp) {           //如果查询成功
        resp.forEach(element => {       //共有3组数据（对象）
          var menuNav = {     //一个这样的对象，对应着一个餐品类型
            gt: {},           //该对象用于存储餐品类型信息
            goodslist: []     //该数组中以对象的方式存储每一个餐品具体信息
          }
          menuNav.gt.gtid = element.GTID
          menuNav.gt.gtname = element.GTNAME
          menuNav.gt.gtstate = element.GTSTATE         
          gtList.push(menuNav)        //在gtList中存储数据库中餐品类型的信息（3组）
        })
        connection.query(menuSql.queryGoodsAll, function (err, respon) {
          if (respon) {              //如果查询成功
            respon.forEach(element => {         //共有6组数据（对象）（循环6次）
              for (let i = 0; i < gtList.length; i++) {         //循环3次
                if (gtList[i].gt.gtid == element.GTID) {      //gtList数组中共有3组对象，每种对象对应一种餐品类型。
                  var goods = {}
                  goods.gid = element.GID
                  goods.gtid = element.GTID
                  goods.gname = element.GNAME
                  goods.gprice = element.GPRICE
                  goods.gstate = element.GSTATE
                  goods.gcontent = element.GCONTENT
                  goods.gimg = element.GIMG
                  goods.gtime = element.GTIME
                  goods.gcount = element.GCOUNT

                  gtList[i].goodslist.push(goods)     //把餐品信息存入相应的餐品类型对象中
                }
              }
            })
            data.gtlist = gtList        //data对象中只有一个gtlist数组
            responseJSON(_res, data)
            connection.release()
          }
        })
      }
    })
  })
})

module.exports = router;